上传文件
一、方式一
1.上传页面
upLoadPage.html
1 2 3 4 513 14Title 6 7 8Thymeleaf
9
<1>. method="post" 是必须的
<2>. enctype="multipart/form-data" 是必须的,表示提交二进制文件<3>. name="file" 是必须的,和后续服务端对应<4>. accept="image/*" 表示只选择图片2.上传文件页面跳转控制器,用来跳转到上传页面。
1 @RequestMapping("upLoadPage")2 public String uploadPage(){3 return "upLoadPage";4 }
3.上传文件控制器,用来上传文件,并跳转到显示页面。
1 @RequestMapping(value = "/upload",method = RequestMethod.POST) 2 public String upload(HttpServletRequest request, @RequestParam("file")MultipartFile file, Model model){ 3 4 try { 5 String fileName=System.currentTimeMillis()+file.getOriginalFilename(); 6 String destFileName=request.getServletContext().getRealPath("")+"uploaded"+File.separator+fileName; 7 File destFile=new File(destFileName); 8 destFile.getParentFile().mkdirs(); 9 file.transferTo(destFile);10 //System.out.println(destFileName);11 model.addAttribute("fileName",fileName);12 }catch (FileNotFoundException e){13 e.printStackTrace();14 return "上传失败,"+e.getMessage();15 }catch (IOException e){16 e.printStackTrace();17 return "上传失败,"+e.getMessage();18 }19 return "showImage";20 }
<1>. 接受上传的文件
@RequestParam("file") MultipartFile file
<2>. 根据时间戳创建新的文件名,这样即便是第二次上传相同名称的文件,也不会把第一次的文件覆盖了
String fileName = System.currentTimeMillis()+file.getOriginalFilename();
<3>. 通过req.getServletContext().getRealPath("") 获取当前项目的真实路径,然后拼接前面的文件名
String destFileName=req.getServletContext().getRealPath("")+"uploaded"+File.separator+fileName;
<4>. 第一次运行的时候,这个文件所在的目录往往是不存在的,这里需要创建一下目录
File destFile = new File(destFileName);
destFile.getParentFile().mkdirs();
<5>. 把浏览器上传的文件复制到希望的位置
file.transferTo(destFile);
<6>. 把文件名放在model里,以便后续显示用
model.addAttribute("fileName",fileName);
4.显示页面
showImage.html
1 2 3 4 5Title 6 7 8 9 10
5.application.properties
1 #spring.mvc.view.prefix=/WEB-INF/jsp/2 #spring.mvc.view.suffix=.jsp3 spring.http.multipart.max-file-size=10MB4 spring.http.multipart.max-request-size=10MB5 6 spring.thymeleaf.enabled=true7 8 server.port=5050
设置上传文件的大小,默认是1m,太小了,文件稍微大一点就会出错。修改端口,启用thymeleaf模板
6.测试
文件的存储路径:
二、方式二(将文件保存在项目目录下)
1.在pom.xml增加依赖,使项目支持JSP。
1 23 7javax.servlet 4javax.servlet-api 5 68 11javax.servlet 9jstl 1012 org.apache.tomcat.embed 13tomcat-embed-jasper 14
2.在main目录下,新建-> webapp/WEB-INF/jsp 目录,用来存放视图。webapp存放视图和资源(上传的文件)
3.showImage.jsp、upLoadPage.jsp中的内容直接把html中的复制过来即可。
1 <%@ page language="java" contentType="text/html; charset=UTF-8"2 pageEncoding="UTF-8"%>3 4
4.application.properties中添加对jsp视图的解析路径,并将thymeleaf模板关闭。
1 spring.mvc.view.prefix=/WEB-INF/jsp/2 spring.mvc.view.suffix=.jsp 4.spring.thymeleaf.enabled=false
5.测试
上传文件所在位置:
代码: